home *** CD-ROM | disk | FTP | other *** search
-
-
-
- CCCCGGGGIIII::::::::FFFFaaaasssstttt((((3333)))) CCCCGGGGIIII::::::::FFFFaaaasssstttt((((3333))))
-
-
-
- NNNNAAAAMMMMEEEE
- CGI::Fast - CGI Interface for Fast CGI
-
- SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
- use CGI::Fast qw(:standard);
- $COUNTER = 0;
- while (new CGI::Fast) {
- print header;
- print start_html("Fast CGI Rocks");
- print
- h1("Fast CGI Rocks"),
- "Invocation number ",b($COUNTER++),
- " PID ",b($$),".",
- hr;
- print end_html;
- }
-
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- CGI::Fast is a subclass of the CGI object created by CGI.pm. It is
- specialized to work well with the Open Market FastCGI standard, which
- greatly speeds up CGI scripts by turning them into persistently running
- server processes. Scripts that perform time-consuming initialization
- processes, such as loading large modules or opening persistent database
- connections, will see large performance improvements.
-
- OOOOTTTTHHHHEEEERRRR PPPPIIIIEEEECCCCEEEESSSS OOOOFFFF TTTTHHHHEEEE PPPPUUUUZZZZZZZZLLLLEEEE
- In order to use CGI::Fast you'll need a FastCGI-enabled Web server. Open
- Market's server is FastCGI-savvy. There are also freely redistributable
- FastCGI modules for NCSA httpd 1.5 and Apache. FastCGI-enabling modules
- for Microsoft Internet Information Server and Netscape Communications
- Server have been announced.
-
- In addition, you'll need a version of the Perl interpreter that has been
- linked with the FastCGI I/O library. Precompiled binaries are available
- for several platforms, including DEC Alpha, HP-UX and SPARC/Solaris, or
- you can rebuild Perl from source with patches provided in the FastCGI
- developer's kit. The FastCGI Perl interpreter can be used in place of
- your normal Perl without ill consequences.
-
- You can find FastCGI modules for Apache and NCSA httpd, precompiled Perl
- interpreters, and the FastCGI developer's kit all at URL:
-
- http://www.fastcgi.com/
-
-
- WWWWRRRRIIIITTTTIIIINNNNGGGG FFFFAAAASSSSTTTTCCCCGGGGIIII PPPPEEEERRRRLLLL SSSSCCCCRRRRIIIIPPPPTTTTSSSS
- FastCGI scripts are persistent: one or more copies of the script are
- started up when the server initializes, and stay around until the server
- exits or they die a natural death. After performing whatever one-time
- initialization it needs, the script enters a loop waiting for incoming
- connections, processing the request, and waiting some more.
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- CCCCGGGGIIII::::::::FFFFaaaasssstttt((((3333)))) CCCCGGGGIIII::::::::FFFFaaaasssstttt((((3333))))
-
-
-
- A typical FastCGI script will look like this:
-
- #!/usr/local/bin/perl # must be a FastCGI version of perl!
- use CGI::Fast;
- &do_some_initialization();
- while ($q = new CGI::Fast) {
- &process_request($q);
- }
-
- Each time there's a new request, CGI::Fast returns a CGI object to your
- loop. The rest of the time your script waits in the call to _n_e_w(). When
- the server requests that your script be terminated, _n_e_w() will return
- undef. You can of course exit earlier if you choose. A new version of
- the script will be respawned to take its place (this may be necessary in
- order to avoid Perl memory leaks in long-running scripts).
-
- CGI.pm's default CGI object mode also works. Just modify the loop this
- way:
-
- while (new CGI::Fast) {
- &process_request;
- }
-
- Calls to _h_e_a_d_e_r(), _s_t_a_r_t__f_o_r_m(), etc. will all operate on the current
- request.
-
- IIIINNNNSSSSTTTTAAAALLLLLLLLIIIINNNNGGGG FFFFAAAASSSSTTTTCCCCGGGGIIII SSSSCCCCRRRRIIIIPPPPTTTTSSSS
- See the FastCGI developer's kit documentation for full details. On the
- Apache server, the following line must be added to srm.conf:
-
- AddType application/x-httpd-fcgi .fcgi
-
- FastCGI scripts must end in the extension .fcgi. For each script you
- install, you must add something like the following to srm.conf:
-
- AppClass /usr/etc/httpd/fcgi-bin/file_upload.fcgi -processes 2
-
- This instructs Apache to launch two copies of file_upload.fcgi at startup
- time.
-
- UUUUSSSSIIIINNNNGGGG FFFFAAAASSSSTTTTCCCCGGGGIIII SSSSCCCCRRRRIIIIPPPPTTTTSSSS AAAASSSS CCCCGGGGIIII SSSSCCCCRRRRIIIIPPPPTTTTSSSS
- Any script that works correctly as a FastCGI script will also work
- correctly when installed as a vanilla CGI script. However it will not
- see any performance benefit.
-
- CCCCAAAAVVVVEEEEAAAATTTTSSSS
- I haven't tested this very much.
-
- AAAAUUUUTTTTHHHHOOOORRRR IIIINNNNFFFFOOOORRRRMMMMAAAATTTTIIIIOOOONNNN
- be used and modified freely, but I do request that this copyright notice
- remain attached to the file. You may modify this module as you wish, but
- if you redistribute a modified version, please attach a note listing the
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-
-
-
- CCCCGGGGIIII::::::::FFFFaaaasssstttt((((3333)))) CCCCGGGGIIII::::::::FFFFaaaasssstttt((((3333))))
-
-
-
- modifications you have made.
-
- Address bug reports and comments to: lstein@genome.wi.mit.edu
-
- BBBBUUUUGGGGSSSS
- This section intentionally left blank.
-
- SSSSEEEEEEEE AAAALLLLSSSSOOOO
- the _C_G_I::_C_a_r_p manpage, the _C_G_I manpage
-
- =cut
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 3333
-
-
-
-